/*
 * Copyright (c) 2009 LastFM.Desktop Anton Pavlik.
 * All Rights Reserved.
 * 
 * You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, 
 * with or without modifications, and in Source or Object form, provided that You meet the following 
 * conditions:
 * 1. You must give any other recipients of the Work or Derivative Works a copy of this License; and
 *
 * 2. You must cause any modified files to carry prominent notices stating that You changed the files; 
 * and
 *
 * 3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, 
 * patent, trademark, and attribution notices from the Source form of the Work, excluding those notices 
 * that do not pertain to any part of the Derivative Works.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); 
 * You may not use this file except in compliance with the License. 
 * You may obtain a copy of the License at 
 * 
 * http://www.apache.org/licenses/LICENSE-2.0 
 *
 * Unless required by applicable law or agreed to in writing, Licensor provides the Work 
 * (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
 * CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties 
 * or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. 
 * YOU ARE SOLELY RESPONSIBLE FOR DETERMINING THE APPROPRIATENESS OF USING OR REDISTRIBUTING THE WORK
 * AND ASSUME ANY RISKS ASSOCIATED WITH YOUR EXERCISE OF PERMISSIONS UNDER THIS LICENSE. 
 */
package org.shake.lastfm.api;

import java.util.List;

import org.apache.xmlrpc.XmlRpcException;
import org.shake.lastfm.model.Album;
import org.shake.lastfm.model.Artist;
import org.shake.lastfm.model.GeoEvent;
import org.shake.lastfm.model.Picture;
import org.shake.lastfm.model.TopTrack;


public interface XmlRpcApi
{
    /**
     * 
     * @param artistName
     * @return
     * @throws XmlRpcException
     */
    Artist fetchArtistInfo(String artistName) throws XmlRpcException;

    /**
     * 
     * @param albumName
     * @return
     * @throws XmlRpcException
     */
    Album fetchAlbumInfo(String artistName, String albumName) throws XmlRpcException;
    
    /**
     * 
     * @param artistName
     * @return
     * @throws XmlRpcException
     */
    List<Picture> fetchArtistPictures(String artistName) throws XmlRpcException;
    
    /**
     * @param userName
     * @param period
     * @return
     * @throws XmlRpcException
     */
    List<TopTrack> fetchTopTracks(String userName, String period ) throws XmlRpcException;
    
    /**
     * @param location
     * @return
     * @throws XmlRpcException
     */
    List<GeoEvent> fetchGeoEvents(String location) throws XmlRpcException;
    
    /**
     * @param location
     * @param distance
     * @param page
     * @return
     * @throws XmlRpcException 
     */
    List<GeoEvent> fetchGeoEvents(String location, Integer distance, Integer page) throws XmlRpcException;
    
}